Міністерство освіти і науки УкраїниНаціональний технічний університет України
«Київський політехнічний інститут ім. І. Сікорського»
Кафедра автоматизації проектування енергетичних процесів і систем
Лабораторна робота №6
з дисципліни «Операційні системи»
«Система команд. Арифметичні команди. Обчислення цілочисельних арифметичних виразів з використанням команд MUL, IMUL, DIV, IDIV, ADD, ADC, INC, SUB, SBB, DEC, NEG, CBW, CWD»
КИЇВ-2022
Мета: програмування блоку обчислення арифметичних виразів на прикладі реалізації математичних формул з використанням арифметичних команд асемблера за індивідуальними завданнями.
Теоретична частина:
6.1 Команди переміщення даних
6.1.1 MOVe operand Пересилання операнда
MOVe operand to/from system registers Пересилання операнда у системні регістри (або з них)
Схема команди: MOV приймальник, джерело
Призначення: пересилання даних між регістрами або регістрами та пам’яттю. Команда має обмеження:
копіювання здійснюється з другого операнда у перший;
значення другого операнда не змінююється;
обидва оператора не можуть бути з пам’яті;
лише один з операндів може бути сегментним, приймальником не може бути регістр CS; не можна пересилати сегментні регістри:
MOV ES, DS
Треба розписати:
MOV AX, DS
MOV ES, AX
не можна напряму ініціалізувати сегмент даних
DSEG SEGMENT
………………………
MOV DS, DSEG
Треба розписати:
MOV AX, DSEG
MOV DS, AX
довжина обох операндів повинна бути однаковою.
Команда Mov має розширену можливість: для випадку, коли довжина операндів різна використовується директива заначення типу:
Тип PTR вираз
Оператор PTR може використовуватися з елементами даних, мітками інструкцій. Він використовує специфікатори типів Byte, Word, Dword, Tbyte для явного зазначення типу DB, DW, DD, DQ, DT для змінних. Він також використовує специфікатори типів NEAR, FAR, PROC для явного зазначення відстані до мітки перреходу. Таким чином, тип – це специфікатор типу, наприклад, BYTE, а вираз – це змінна або константа.
Наприклад,
BYTEA DB 22H
DB 35H
WORDA DW 2672H ; у памяті зберігається у вигляді 7226Н
………….
MOV BYTE PTR WORDA, 05; Розмістити 05 у перший байт WORDA
MOV AX, WORD PTR BYTEA; Розмістити в АХ два байти (2235Н) з BYTEA
6.2 Арифметичні команди
6.2.1 Команда складання ADD (ADDition)
Синтаксис: ADD приймальник, джерело
Символьний код: ADD регістр/пам’ять, регістр/пам’ять/безпосереднє значення
Призначення: складання двох операндів джерела та приймальника розмірністю байт, слово або подвійне слово, записати результат складання за адресою першого операнда, встановити прапорці.
Ця операція є коректною при використанні операндів: регістр-регістр, регістр-пам’ять, пам’ять-пам’ять, пам’ять-безпосереднє значення.
Виконання команди додавання впливає на стан прапорців:
CF (Carry)– перенесення (зі старшого знакового розряду; наприклад, для байта в 9-му розряді при виконанні команди додавання з’явилася 1), PF (Parity)– парність, AF (Auxiliary)- допоміжне перенесення, ZF (Zero)– нуль, SF (Sign)– мінус, OF (Overflow)– переповнювання.
Команда ADD використовується для складання двох цілочисельних операндів. Якщо результат складання виходить за межі першого операнда (виникає переповнювання), то врахувати цю ситуацію слід шляхом аналізу прапорця CF і подальшого можливого застосування команди ADC. Наприклад, складемо значення в регістрі АХ і області пам'яті CHН. При складанні слід врахувати можливість переповнювання.
ADD AX, CНН ; додати значення з області пам’яті СНН до регістру АХ
ADD AX, CН ; додати регістр до регістру, результат записати в АХ.
ADD EBX, DBLWORD ; додати подвійне слово з пам’яті до регістру.
ADD BL, 10 ; додати 10 до молодшої частини регістра ВХ.
6.2.2 Команда складання двох операндів з урахуванням перенесенням з молодшого розряда ADC (ADDition with Carry)
Синтаксис: ADС приймальник, джерело.
Символьний код: ADС регістр/пам’ять, регістр/пам’ять/безпосереднє значення
Впливає на прапорці AF, CF, OF, PF, SF, ZF
Результат заноситься у перший о...